export const directives = [
  'breed',
  'to',
  'to-report',
  'globals',
  'directed-link-breed',
  'undirected-link-breed',
  'extensions',
  '__includes',
];

export const commands = [
  '__apply',
  '__bench',
  '__change-topology',
  '__done',
  '__experimentstepend',
  '__export-drawing',
  '__foreverbuttonend',
  '__ignore',
  '__let',
  '__linkcode',
  '__make-preview',
  '__mkdir',
  '__observercode',
  '__patchcode',
  '__plot-pen-hide',
  '__plot-pen-show',
  '__pwd',
  '__reload-extensions',
  '__set-line-thickness',
  '__stderr',
  '__stdout',
  '__thunk-did-finish',
  '__turtlecode',
  'ask',
  'ask-concurrent',
  'auto-plot-off',
  'auto-plot-on',
  'back',
  'beep',
  'bk',
  'ca',
  'carefully',
  'cd',
  'clear-all',
  'clear-all-plots',
  'clear-drawing',
  'clear-globals',
  'clear-links',
  'clear-output',
  'clear-patches',
  'clear-plot',
  'clear-ticks',
  'clear-turtles',
  'cp',
  'create-link-from',
  'create-link-to',
  'create-link-with',
  'create-links-from',
  'create-links-to',
  'create-links-with',
  'create-ordered-turtles',
  'create-temporary-plot-pen',
  'create-turtles',
  'cro',
  'crt',
  'ct',
  'die',
  'diffuse',
  'diffuse4',
  'display',
  'downhill',
  'downhill4',
  'error',
  'every',
  'export-all-plots',
  'export-interface',
  'export-output',
  'export-plot',
  'export-view',
  'export-world',
  'face',
  'facexy',
  'fd',
  'file-close',
  'file-close-all',
  'file-delete',
  'file-flush',
  'file-open',
  'file-print',
  'file-show',
  'file-type',
  'file-write',
  'follow',
  'follow-me',
  'foreach',
  'forward',
  'hatch',
  'hide-link',
  'hide-turtle',
  'histogram',
  'home',
  'help',
  'ht',
  'hubnet-broadcast',
  'hubnet-broadcast-clear-output',
  'hubnet-broadcast-message',
  'hubnet-clear-override',
  'hubnet-clear-overrides',
  'hubnet-kick-all-clients',
  'hubnet-kick-client',
  'hubnet-fetch-message',
  'hubnet-reset',
  'hubnet-reset-perspective',
  'hubnet-send',
  'hubnet-send-clear-output',
  'hubnet-send-follow',
  'hubnet-send-message',
  'hubnet-send-override',
  'hubnet-send-watch',
  'if',
  'if-else',
  'ifelse',
  'import-drawing',
  'import-pcolors',
  'import-pcolors-rgb',
  'import-world',
  'inspect',
  'jump',
  'layout-circle',
  'layout-radial',
  'layout-spring',
  'layout-tutte',
  'left',
  'let',
  'loop',
  'lt',
  'move-to',
  'no-display',
  'output-print',
  'output-show',
  'output-type',
  'output-write',
  'pd',
  'pe',
  'pen-down',
  'pen-erase',
  'pen-up',
  'pendown',
  'penup',
  'plot',
  'plot-pen-down',
  'plot-pen-reset',
  'plot-pen-up',
  'plotxy',
  'print',
  'pu',
  'random-seed',
  'repeat',
  'report',
  'reset-perspective',
  'reset-ticks',
  'reset-timer',
  'resize-world',
  'ride',
  'ride-me',
  'right',
  'rp',
  'rt',
  'run',
  'set',
  'set-current-directory',
  'set-current-plot',
  'set-current-plot-pen',
  'set-default-shape',
  'set-histogram-num-bars',
  'set-patch-size',
  'set-plot-background-color',
  'set-plot-pen-color',
  'set-plot-pen-interval',
  'set-plot-pen-mode',
  'set-plot-x-range',
  'set-plot-y-range',
  'setup-plots',
  'setxy',
  'show',
  'show-link',
  'show-turtle',
  'sprout',
  'st',
  'stamp',
  'stamp-erase',
  'stop',
  'stop-inspecting',
  'stop-inspecting-dead-agents',
  'tick',
  'tick-advance',
  'tie',
  'type',
  'untie',
  'update-plots',
  'uphill',
  'uphill4',
  'user-message',
  'wait',
  'watch',
  'watch-me',
  'while',
  'with-local-randomness',
  'without-interruption',
  'write',
];

export const extensionCommands = [
  'array:set',
  'matrix:set',
  'matrix:set-row',
  'matrix:set-column',
  'matrix:swap-rows',
  'matrix:swap-columns',
  'table:clear',
  'table:put',
  'table:remove',
  'dialog:user-input',
  'dialog:user-message',
  'dialog:user-one-of',
  'dialog:user-yes-or-no?',
  'tutorial:show-dialog',
  'tutorial:minimize-dialog',
  'tutorial:hide-dialog',
  'tutorial:back-dialog',
  'tutorial:submit-input',
  'tutorial:get',
  'tutorial:set',
  'tutorial:activate',
  'tutorial:survey',
  'tutorial:activate',
  'tutorial:deactivate',
  'tutorial:back',
  'tutorial:forward',
  'tutorial:go',
  'widget:show',
  'widget:hide',
  'widget:move',
  'widget:toast',
  'widget:set-title',
  'widget:bind',
  'widget:unbind',
  'widget:set-group',
  'widget:show-group',
  'widget:hide-group',
  'widget:move-group',
  'widget:rename-group',
  'widget:show-joystick',
  'widget:hide-joystick',
  'widget:bind-joystick',
  'workspace:play',
  'workspace:pause',
  'workspace:show',
  'workspace:hide',
  'workspace:bind',
  'workspace:unbind',
  'workspace:unbind-all',
  'workspace:trigger',
  'workspace:set-speed',
  'workspace:recompile',
  'workspace:clear-commands',
  'workspace:execute-command',
  'plot:show',
  'plot:hide',
  'plot:activate',
  'plot:move',
  'plot:set-title',
  'plot:bind',
  'plot:unbind',
  'nettango:recompile',
  'nettango:activate',
  'nettango:show',
  'nettango:hide',
  'nettango:show-blocks',
  'nettango:show-blocks-except',
  'nettango:hide-blocks',
  'nettango:hide-blocks-except',
  'nettango:highlight-blocks',
  'nettango:highlight-blocks-except',
  'nettango:switch-program',
  'sound:play-drum',
  'sound:play-note',
  'sound:play-note-later',
  'sound:start-note',
  'sound:stop-note',
  'sound:stop-instrument',
  'sound:stop-music',
  'tune:clear',
  'tune:use',
  'tune:tempo',
  'tune:note',
  'tune:rest',
  'tune:loop',
  'tune:once',
  'tune:loop-then',
  'tune:once-then',
  'tune:volume',
  'tune:moveto',
  'tune:rewind',
  'tune:forward',
  'tune:stop',
  'sensor:clear',
  'sensor:bind-gesture',
  'sensor:unbind-gesture',
  'sensor:open',
  'sensor:close',
  'sensor:on-change',
  'sensor:set-warning',
  'phys:update',
  'phys:clear-vectors',
  'phys:show-vector',
  'phys:show-orthogonal',
  'phys:hide-vectors',
  'phys:contact-begin',
  'phys:contact-end',
  'phys:contact-stay',
  'phys:filter-contact',
  'phys:raycast-all',
  'phys:all-contacts',
  'phys:set-gravity',
  'phys:set-physical',
  'phys:set-group',
  'phys:set-friction',
  'phys:set-restitution',
  'phys:set-density',
  'phys:set-type',
  'phys:set-mass',
  'phys:set-origin',
  'phys:set-v',
  'phys:set-angular-v',
  'phys:set-linear-damping',
  'phys:set-angular-damping',
  'phys:push',
  'phys:apply-force',
  'phys:apply-torque',
  'phys:make-box',
  'phys:make-circle',
  'phys:make-polygon',
  'phys:make-edges',
  'phys:add-box',
  'phys:add-circle',
  'phys:add-polygon',
  'phys:add-edges',
  'phys:detach-joint',
  'phys:distance-joint',
  'phys:distance-joint-anchored',
  'phys:mouse-joint',
  'phys:set-length',
  'phys:set-lengths',
  'phys:set-linear-stiffness',
  'phys:set-damping',
  'phys:set-stiffness',
  'phys:set-max-force',
  'phys:set-max-torque',
  'phys:set-force',
  'phys:set-torque',
];

export const extensions = [
  'tutorial',
  'widget',
  'plot',
  'workspace',
  'sound',
  'tune',
  'sensor',
  'phys',
  'array',
  'matrix',
  'table',
  'palette',
];

export const reporters = [
  '!=',
  '*',
  '+',
  '-',
  '/',
  '<',
  '<=',
  '=',
  '>',
  '>=',
  '^',
  '__apply-result',
  '__boom',
  '__check-syntax',
  '__dump',
  '__dump-extension-prims',
  '__dump-extensions',
  '__dump1',
  '__hubnet-in-q-size',
  '__hubnet-out-q-size',
  '__nano-time',
  '__patchcol',
  '__patchrow',
  '__processors',
  '__random-state',
  '__stack-trace',
  '__to-string',
  'abs',
  'acos',
  'all?',
  'and',
  'any?',
  'approximate-hsb',
  'approximate-rgb',
  'asin',
  'at-points',
  'atan',
  'autoplot?',
  'base-colors',
  'behaviorspace-experiment-name',
  'behaviorspace-run-number',
  'bf',
  'bl',
  'both-ends',
  'but-first',
  'but-last',
  'butfirst',
  'butlast',
  'can-move?',
  'ceiling',
  'cos',
  'count',
  'date-and-time',
  'distance',
  'distance-nowrap',
  'distancexy',
  'distancexy-nowrap',
  'dx',
  'dy',
  'empty?',
  'end1',
  'end2',
  'error-message',
  'exp',
  'extract-hsb',
  'extract-rgb',
  'file-at-end?',
  'file-exists?',
  'file-read',
  'file-read-characters',
  'file-read-line',
  'filter',
  'first',
  'floor',
  'fput',
  'hsb',
  'hubnet-clients-list',
  'hubnet-enter-message?',
  'hubnet-exit-message?',
  'hubnet-message',
  'hubnet-message-source',
  'hubnet-message-tag',
  'hubnet-message-waiting?',
  'ifelse-value',
  'in-cone',
  'in-cone-nowrap',
  'in-link-from',
  'in-link-neighbor?',
  'in-link-neighbors',
  'in-radius',
  'in-radius-nowrap',
  'insert-item',
  'int',
  'is-agent?',
  'is-agentset?',
  'is-anonymous-command?',
  'is-anonymous-reporter?',
  'is-boolean?',
  'is-command-task?',
  'is-directed-link?',
  'is-link-set?',
  'is-link?',
  'is-list?',
  'is-number?',
  'is-patch-set?',
  'is-patch?',
  'is-reporter-task?',
  'is-string?',
  'is-turtle-set?',
  'is-turtle?',
  'is-undirected-link?',
  'item',
  'last',
  'length',
  'link',
  'link-heading',
  'link-length',
  'link-neighbor?',
  'link-neighbors',
  'link-set',
  'link-shapes',
  'link-with',
  'links',
  'list',
  'ln',
  'log',
  'lput',
  'map',
  'max',
  'max-n-of',
  'max-one-of',
  'max-pxcor',
  'max-pycor',
  'mean',
  'median',
  'member?',
  'min',
  'min-n-of',
  'min-one-of',
  'min-pxcor',
  'min-pycor',
  'mod',
  'modes',
  'mouse-down?',
  'mouse-inside?',
  'mouse-xcor',
  'mouse-ycor',
  'movie-status',
  'my-in-links',
  'my-links',
  'my-out-links',
  'myself',
  'n-of',
  'n-values',
  'neighbors',
  'neighbors4',
  'netlogo-applet?',
  'netlogo-version',
  'netlogo-web?',
  'new-seed',
  'no-links',
  'no-patches',
  'no-turtles',
  'not',
  'of',
  'one-of',
  'or',
  'other',
  'other-end',
  'out-link-neighbor?',
  'out-link-neighbors',
  'out-link-to',
  'patch',
  'patch-ahead',
  'patch-at',
  'patch-at-heading-and-distance',
  'patch-here',
  'patch-left-and-ahead',
  'patch-right-and-ahead',
  'patch-set',
  'patch-size',
  'patches',
  'plot-name',
  'plot-pen-exists?',
  'plot-x-max',
  'plot-x-min',
  'plot-y-max',
  'plot-y-min',
  'position',
  'precision',
  'random',
  'random-exponential',
  'random-float',
  'random-gamma',
  'random-normal',
  'random-or-random-float',
  'random-poisson',
  'random-pxcor',
  'random-pycor',
  'random-xcor',
  'random-ycor',
  'range',
  'read-from-string',
  'reduce',
  'remainder',
  'remove',
  'remove-duplicates',
  'remove-item',
  'replace-item',
  'reverse',
  'rgb',
  'round',
  'run-result',
  'runresult',
  'scale-color',
  'se',
  'self',
  'sentence',
  'shade-of?',
  'shapes',
  'shuffle',
  'sin',
  'sort',
  'sort-by',
  'sort-on',
  'sqrt',
  'standard-deviation',
  'subject',
  'sublist',
  'substring',
  'subtract-headings',
  'sum',
  'tan',
  'task',
  'ticks',
  'timer',
  'towards',
  'towards-nowrap',
  'towardsxy',
  'towardsxy-nowrap',
  'turtle',
  'turtle-set',
  'turtles',
  'turtles-at',
  'turtles-here',
  'turtles-on',
  'up-to-n-of',
  'user-directory',
  'user-file',
  'user-input',
  'user-new-file',
  'user-one-of',
  'user-yes-or-no?',
  'value-from',
  'values-from',
  'variance',
  'with',
  'with-max',
  'with-min',
  'word',
  'world-height',
  'world-width',
  'wrap-color',
  'xor',
];

export const extensionReporters = [
  'array:from-list',
  'array:to-list',
  'array:is-array?',
  'array:length',
  'array:item',
  'csv:from-string',
  'csv:from-row',
  'csv:from-file',
  'csv:to-string',
  'csv:to-file',
  'csv:to-row',
  'matrix:is-matrix?',
  'matrix:regress',
  'matrix:forecast-continuous-growth',
  'matrix:forecast-compound-growth',
  'matrix:forecast-linear-growth',
  'matrix:make-constant',
  'matrix:dimensions',
  'matrix:det',
  'matrix:dimensions',
  'matrix:rank',
  'matrix:trace',
  'matrix:make-identity',
  'matrix:from-row-list',
  'matrix:from-column-list',
  'matrix:to-row-list',
  'matrix:to-column-list',
  'matrix:copy',
  'matrix:pretty-print-text',
  'matrix:solve',
  'matrix:get',
  'matrix:get-row',
  'matrix:get-column',
  'matrix:set-and-report',
  'matrix:submatrix',
  'matrix:map',
  'matrix:times-scalar',
  'matrix:times',
  'matrix:times-element-wise',
  'matrix:plus',
  'matrix:plus-scalar',
  'matrix:minus',
  'matrix:inverse',
  'matrix:transpose',
  'matrix:real-eigenvalues',
  'matrix:imaginary-eigenvalues',
  'matrix:eigenvectors',
  'table:is-table?',
  'table:counts',
  'table:group-agents',
  'table:group-items',
  'table:from-list',
  'table:from-json',
  'table:get',
  'table:get-or-default',
  'table:has-key?',
  'table:keys',
  'table:length',
  'table:make',
  'table:to-list',
  'table:to-json',
  'table:values',
  'workspace:get-platform',
  'tutorial:get',
  'tutorial:in-tutorial?',
  'tutorial:is-activated?',
  'sound:drums',
  'sound:instruments',
  'tune:drums',
  'tune:instruments',
  'tune:who',
  'sensor:touches',
  'sensor:touch',
  'sensor:touch-size',
  'sensor:read-number',
  'sensor:read-vector',
  'sensor:is-available?',
  'widget:joystick-x',
  'widget:joystick-y',
  'phys:get-gravity',
  'phys:raycast',
  'phys:pointcast',
  'phys:query',
  'phys:contacts',
  'phys:turtles-here',
  'phys:turtles-around',
  'phys:is-physical?',
  'phys:get-friction',
  'phys:get-restitution',
  'phys:get-type',
  'phys:get-group',
  'phys:get-density',
  'phys:get-mass',
  'phys:get-origin',
  'phys:get-v',
  'phys:get-vx',
  'phys:get-vy',
  'phys:get-a',
  'phys:get-angular-v',
  'phys:get-angular-a',
  'phys:get-linear-damping',
  'phys:get-angular-damping',
  'phys:get-length',
  'phys:get-damping',
  'phys:get-stiffness',
  'phys:get-max-force',
  'phys:get-max-torque',
  'phys:get-force',
  'phys:get-torque',
];

export const turtleVars = [
  'who',
  'color',
  'heading',
  'xcor',
  'ycor',
  'shape',
  'label',
  'label-color',
  'hidden?',
  'size',
  'pen-size',
  'pen-mode',
  'breed',
];

export const patchVars = ['pxcor', 'pycor', 'pcolor', 'plabel', 'plabel-color'];

export const linkVars = [
  'end1',
  'end2',
  'color',
  'label',
  'label-color',
  'hidden?',
  'breed',
  'thickness',
  'shape',
  'tie-mode',
];

export const constants = [
  'true',
  'false',
  'nobody',
  'e',
  'pi',
  'gray',
  'grey',
  'red',
  'orange',
  'brown',
  'yellow',
  'green',
  'lime',
  'turquoise',
  'cyan',
  'sky',
  'blue',
  'violet',
  'magenta',
  'pink',
  'black',
  'white',
];

export const unsupported = [
  'ask-concurrent',
  'beep',
  'display',
  'export-interface',
  'file-close',
  'file-close-all',
  'file-delete',
  'file-flush',
  'file-open',
  'file-print',
  'file-show',
  'file-type',
  'file-write',
  'hubnet-broadcast',
  'hubnet-broadcast-clear-output',
  'hubnet-broadcast-message',
  'hubnet-clear-override',
  'hubnet-clear-overrides',
  'hubnet-kick-all-clients',
  'hubnet-kick-client',
  'hubnet-fetch-message',
  'hubnet-reset',
  'hubnet-reset-perspective',
  'hubnet-send',
  'hubnet-send-clear-output',
  'hubnet-send-follow',
  'hubnet-send-message',
  'hubnet-send-override',
  'hubnet-send-watch',
  'inspect',
  'no-display',
  'set-current-directory',
  'file-at-end?',
  'file-exists?',
  'file-read',
  'file-read-characters',
  'file-read-line',
  'hubnet-clients-list',
  'hubnet-enter-message?',
  'hubnet-exit-message?',
  'hubnet-message',
  'hubnet-message-source',
  'hubnet-message-tag',
  'hubnet-message-waiting?',
  'movie-status',
  'user-directory',
  'user-file',
  'user-new-file',
  'user-one-of',
];
